package com.imooc.common.structure.queue;

public class QueueHelper {

    public static void main(String[] args) {
        Queue queue = new Queue();
        // 分配了6个长度的数组,实际是能存5个数据
        queue.arrays = new int[6];
        queue.front = 0;
        queue.rear = 0;
    }


    /**
     * 判断队列是否满了,front和rear指针紧挨着，就是满了
     * @param queue
     * @return
     */
    public static boolean isFull(Queue queue) {
        if ((queue.rear+1)%queue.arrays.length == queue.front){
            return true;
        }else {
            return false;
        }
    }

    /**
     * 入队
     * @param queue
     * @param value
     */
    public static void enQueue(Queue queue,int value){

        // 不是满的队列才能入队
        if (!isFull(queue)){
            // 将新的元素插入到队尾
            queue.arrays[queue.rear] = value;

            // 将rear节点移动到无效元素位置上
            queue.rear = (queue.rear+1)%queue.arrays.length;
        }

    }

    /**
     * 遍历队列
     * @param queue
     */
    public static void traverseQueue(Queue queue){
        int i = queue.front;

        while (i!=queue.rear){
            System.out.println(queue.arrays[i]);
            i = (i+1)%queue.arrays.length;
        }
    }

    public static boolean isEmpty(Queue queue){

        if (queue.rear == queue.front)
            return true;
        return false;
    }


    public static void outQueue(Queue queue){
        //判断该队列是否为空
        if (!isEmpty(queue)){
            //不为空才出队
            int value = queue.arrays[queue.front];
            // front指针往后面移
            System.out.println("出队的元素是: "+value);

            queue.front = (queue.front+1)%queue.arrays.length;
        }
    }

}
